"""设计如下几个类
1、类名MainWindowV，负责创建tkinter的总窗口，窗口按2x3布局，长1000，宽750。左上角显示菜单栏：模块，点击后子菜单分别为Backtesting、Factor Analysis、Message、K Lines、Download MKData。
分别对应不同的模块，模块相应类会在后面介绍。除了第一行第一列的窗口根据用户选择的菜单项进行变更，其他位置均是固定不变的，可以预先布局，当用户更改模块下的菜单项时，需要重置第一行第一列的窗口。
2、类名Backtesting，子窗口，具备一个文本输入框和一个按钮，占据第一行第一列。大小400x400。
3、类名Factor Analysis，子窗口，具备一个文本输入框和一个按钮，占据第一行第一列。大小400x400。
4、类名Message，子窗口，具备一个文本输入框和一个按钮，占据第一行第一列。大小400x400。
5、类名K Lines，子窗口，具备一个文本输入框和一个按钮，占据第一行第一列。大小400x400。
6、类名Download MKData，子窗口，具备一个文本输入框和一个按钮，占据第一行第一列。大小400x400。
7、类名Running，子窗口，其中具备canvas、text两个上下排列的组件，占据第二行第一列。大小400x350。当菜单项发生改变，重置该窗口的内容。
8、类名Operate，子窗口，占据第一二行第二列，大小300x750。仅包含文本框。
9、类名FileInfo，子窗口，占据第一行第三列，仅包含文本框。
10、类名FileAction，子窗口，占据第二行第三列，仅包含文本框。
每个子窗口左上角都显示其类名，要美观。
"""
from tools.view import *


class SubWindowView:
    def __init__(self, main_window_view):
        self.main_window_view = main_window_view
        self.auto_layout: AutoLayout = None
        self.frame = self.main_window_view.dynamic_module_frame
        # 清空frame的内容
        for widget in self.frame.winfo_children():
            # 使用destroy方法移除子组件
            widget.destroy()

    def set_command(self):
        pass

    def on_change_model_name(self, model_name):
        # 设置self.module_window的第一项model name为model_name的值
        pass

    def on_ok(self):
        # 视图类on_ok，映射到实体类的on_ok
        self.main_window_view.master.dynamic_module_model_dc[self.main_window_view.master.file_manager.now_dynamic_module].on_ok()

    def on_run(self):
        # 视图类on_run，映射到实体类的on_run
        self.main_window_view.master.dynamic_module_model_dc[self.main_window_view.master.file_manager.now_dynamic_module].on_run()

    def on_only_data(self):
        self.main_window_view.master.dynamic_module_model_dc[self.main_window_view.master.file_manager.now_dynamic_module].on_only_data()

    def on_only_report(self):
        self.main_window_view.master.dynamic_module_model_dc[self.main_window_view.master.file_manager.now_dynamic_module].on_only_report()

    def on_stop(self):
        self.main_window_view.master.dynamic_module_model_dc[self.main_window_view.master.file_manager.now_dynamic_module].on_stop()


class AdditionWindowView:
    def __init__(self, super_model):
        self.super_model = super_model
        self.root = tk.Toplevel()
        self.root.title(self.super_model.module.value)
        width = 400
        height = 500
        self.root.geometry(f"{width}x{height}")
        self.frame = tk.Frame(self.root, width=width, height=height)
        self.frame.pack()
        self.auto_layout = None

    def create_layout_init(self):
        pass

    def mainloop(self):
        self.root.mainloop()
        pass

    def on_ok(self):
        self.super_model.on_ok()

    def on_run(self):
        self.super_model.on_run()

    def on_draw(self):
        self.super_model.on_draw()
